package com.winit.openapi.constants;

/**
 * 共享单常量
 * 
 * @author long.chen 2015-4-18 下午1:38:03
 * @since 1.0
 */
public class EnumConstant {

    /**
     * 共享单状态
     * 
     * @author qiulong.zhang
     */
    public enum ShareOrderStatus {
        /** 草稿 **/
        DR("DR"),
        /** 已提交 **/
        SBC("SBC"),
        /** 作废 */
        VO("VO"),
        /** 已确认 */
        CC("CC"),
        /** 生效中 */
        FOC("FOC");

        private String val;

        private ShareOrderStatus(String val){
            this.val = val;
        }

        public String getVal() {
            return this.val;
        }
    }

    /**
     * 共享单类型
     * 
     * @author qiulong.zhang
     */
    public enum ShareOrderType {
        /** 全部 **/
        All("All"),
        /** 部分 **/
        PART("Part");

        private String val;

        private ShareOrderType(String val){
            this.val = val;
        }

        public String getVal() {
            return this.val;
        }
    }

    public enum MeasurementSystem {
        TMS("TMS"), TBS("TBS");

        private String val;

        private MeasurementSystem(String val){
            this.val = val;
        }

        public String getVal() {
            return this.val;
        }

        public static MeasurementSystem valOf(String val) {
            for (MeasurementSystem cs : MeasurementSystem.values()) {
                if (val.equals(String.valueOf(cs.getVal()))) {
                    return cs;
                }
            }
            return null;
        }
    }

    /**
     * 国家编码
     * 
     * @author long.chen
     */
    public enum CountryCode {
        /** 中国 **/
        CN("CN"),
        /** 美国 **/
        US("US"),
        /** 英国 */
        UK("UK"),
        /** 德国 */
        DE("DE"),
        /** 澳洲 */
        AU("AU");

        private String val;

        private CountryCode(String val){
            this.val = val;
        }

        public String getVal() {
            return this.val;
        }
    }

    /**
     * 国家名称
     * 
     * @author long.chen
     */
    public enum CountryName {
        /** 中国 **/
        CN("CN"),
        /** 美国 **/
        US("US"),
        /** 英国 */
        UK("UK"),
        /** 德国 */
        DE("DE"),
        /** 澳洲 */
        AU("AU");

        private String val;

        private CountryName(String val){
            this.val = val;
        }

        public String getVal() {
            return this.val;
        }
    }

    /**
     * 进口商/出口商
     * 
     * @author long.chen
     */
    public enum EorIorType {
        /** 进口商 **/
        IOR("IOR"),
        /** 出口商 **/
        EOR("EOR");

        private String val;

        private EorIorType(String val){
            this.val = val;
        }

        public String getVal() {
            return this.val;
        }
    }

    /**
     * 进口商/出口商状态 状态(是否审核)WFC：未审核 APP：通过 OAP：不通过
     * 
     * @author long.chen
     */
    public enum EorIorStatus {
        /** WFC：未审核 **/
        WFC("WFC"),
        /** APP：通过 **/
        APP("APP"),
        /** NAP：不通过 **/
        NAP("NAP");

        private String val;

        private EorIorStatus(String val){
            this.val = val;
        }

        public String getVal() {
            return this.val;
        }
    }

    /**
     * 0在途中、1已揽收、2疑难、3已签收、4退签、5同城派送中、6退回、7转单
     * 
     * @author zq
     */
    public enum ExpressReceivingStatus {
        /** 0在途中 **/
        ZT(0),
        /** 1已揽收 **/
        LS(1),
        /** 2疑难 **/
        YN(2),
        /** 3已签收 **/
        QS(3),
        /** 4退签 **/
        TQ(4),
        /** 5同城派送中 **/
        PS(5),
        /** 6退回 **/
        TH(6),
        /** 7转单 **/
        ZD(7);

        private int val;

        private ExpressReceivingStatus(int val){
            this.val = val;
        }

        public int getVal() {
            return this.val;
        }
    }

    /**
     * 0在途中、1已揽收、2疑难、3已签收、4退签、5同城派送中、6退回、7转单
     * 
     * @author zq
     */
    public enum MonitorStatus {
        /** polling:监控中 **/
        POLLING("polling"),
        /** shutdown:结束 **/
        SHUTDOWN("shutdown"),
        /** abort:中止 **/
        ABORT("abort"),
        /** updateall：重新推送 **/
        UPDATEALL("updateall");

        private String val;

        private MonitorStatus(String val){
            this.val = val;
        }

        public String getVal() {
            return this.val;
        }
    }

    /**
     * 订单类型为标准海外仓出库单状态为： DR:草稿(draft rough)、CFI:出库确认中、CF:出库确认、PKC:拣选完成(pick
     * complete)、 PAC打包完成(pack complete)、DLI:派送中(dispatching )、DLC:派送完成(dispatch
     * complete)、 GC:已取消(got cancel)、PKE:拣选异常(pick exception)、PAE:打包异常(pack
     * exception) 订单类型为销毁出库单时，状态为：
     * DR:草稿、CFI:出库确认中、CF:出库确认、PKC:拣选完成、DSC:销毁完成(destroy
     * complete)、GC:已取消、PKE:拣选异常 订单类型自提出库单时，状态为：
     * DR:草稿、CFI:出库确认中、CF:出库确认、PKC:拣选完成、PAC打包完成、OBC:出库完成(outbound complete)、
     * GC:已取消、PKE:拣选异常、PAE:打包异常
     */
    public enum OrderStatus {
        /** 草稿 */
        DR("DR", "草稿"), 
        CFI("CFI", "出库确认中"), 
        CF("CF", "出库确认"),
        /** 已下单 */
        GAO("GAO", "已下单"),
        /** 拣选完成 */
        PKC("PKC", "拣选完成 "),
        /** 打包完成 */
        PAC("PAC", "打包完成"),
        /** 派送中 */
        DLI("DLI", "派送中"),
        /** 派送完成 */
        DLC("DLC", "派送完成"),
        /** 已取消 */
        VO("VO", "已取消"),
        VOI("VOI", "取消中"),
        /** 拣选异常 */
        PKE("PKE", "拣选异常"),
        /** 打包异常 */
        PAE("PAE", "打包异常"),
        /** 销毁完成 */
        DSC("DSC", "销毁完成"),
        /** 出库完成 */
        OBC("OBC", "出库完成");
        
        private String status;

        private String statusName;

        private OrderStatus(String status){
            this.status = status;
        }

        private OrderStatus(String status, String statusName){
            this(status);
            this.statusName = statusName;
        }

        public String getStatus() {
            return status;
        }

        public void setStatus(String status) {
            this.status = status;
        }

        public String getStatusName() {
            return statusName;
        }

        public void setStatusName(String statusName) {
            this.statusName = statusName;
        }

    }

    public enum SLAStatus {
        /** 准时 */
        PT("PT", "准时"),
        /** 迟到 */
        BL("BL", "迟到"),
        /** 进行中 */
        IP("IP", "进行中");

        private String status;

        private String statusName;

        private SLAStatus(String status){
            this.status = status;
        }

        private SLAStatus(String status, String statusName){
            this(status);
            this.statusName = statusName;
        }

        public String getStatus() {
            return status;
        }

        public void setStatus(String status) {
            this.status = status;
        }

        public String getStatusName() {
            return statusName;
        }

        public void setStatusName(String statusName) {
            this.statusName = statusName;
        }

    }

    
    public enum ThirdLevelCategory{
        CATEGORY_TRANSPORT_AIR("C0301", "空运"), //
        CATEGORY_TRANSPORT_SEA("C0302", "海运"), //
        CATEGORY_TRANSPORT_AIR_V2("C0301002", "空运V2.0"), //
        CATEGORY_TRANSPORT_SEA_V2("C0302002", "海运V2.0"), //
        CATEGORY_TRANSPORT_EXPRESS("C0303", "快递"); //
        private String code;

        private String desc;

        private ThirdLevelCategory(String code, String desc){
            this.code = code;
            this.desc = desc;
        }

        public String getCode() {
            return code;
        }

        public String getDesc() {
            return desc;
        }
    } 
    
    /**
     * 
     * 平台标识
     *
     */
    public enum PlatformIdentifier{
        BOOKING("bk","Booking"),
        SELLER_PORTAL("sw","卖家网站");
        private String code;

        private String desc;

        private PlatformIdentifier(String code, String desc){
            this.code = code;
            this.desc = desc;
        }

        public String getCode() {
            return code;
        }

        public String getDesc() {
            return desc;
        }
    } 
    
}
